Many computers communicate with peripheral I/O units via preassigned I/O addresses. For instance, the International Business Machines' personal computer (IBM PC) has 1024 such I/O addresses ranging from hexadecimal 000 to 3FF, with 8 to 16 of these addresses being typically assigned to each peripheral unit. While 1024 I/O addresses are adequate to support any anticipated combination of I/O units which might be installed in a particular IBM PC, they are not adequate to allow each unit type being marketed to have one or more addresses assigned for its exclusive use. As a result, one or more I/O units installed in the same computer (particularly those from different manufacturers) could have overlapping I/O addresses.
One way of avoiding this conflict is to install switches in the I/O units so that the addresses are hardware programmable. The switches are then programmed so as to avoid any conflict between addresses of the peripheral units installed in a particular computer. In addition, when the hardware switches are programmed, the software in the computer must also be changed so that it will access the new hardware programmed addresses. It will be evident that such an arrangement is both costly to manufacture and time consuming to install because the computer must be disassembled. This disassembly and reassembly process could result in damage to the I/O unit or the computer whenever the switch positions are being altered.